﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HospitalAdmision
{
    public partial class FormIngresoPaciente : Form
    {
        ProyHospitalEntities proyhospitalE;
        public FormIngresoPaciente()
        {
            InitializeComponent();
        }

        private void salirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            FormAdmision frmprincipal = new FormAdmision();
            frmprincipal.Show();
            this.Close();
        }

        private void FormIngresoPaciente_Load(object sender, EventArgs e)
        {
            proyhospitalE = new ProyHospitalEntities();
        }

        private void btnAdmIngresar_Click(object sender, EventArgs e)
        {
            

            if (txtAdmRut.Text == "" || txtAdmNombres.Text == "" || txtAdmApellidoPatPaciente.Text == "" || txtAdmApellidoMatPaciente.Text == "" || txtAdmCodigoPostal.Text == "" || cboAdmSexo.Text == "" || txtAdmEdad.Text == "" || cboAdmUnidadFuncional.Text == "" || cboAdmFormaPago.Text == "" || txtAdmContraindicaciones.Text == "")
            {
                MessageBox.Show("Debe completar todos los campos", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                ValidaRut validar = new ValidaRut(txtAdmRut.Text); //Crea el objeto de la clase ValidaRut
                if (validar.verificarRut() == false)
                {
                    MessageBox.Show("El rut no es valido");
                }
                else
                {
                    Paciente nuevopaciente = new Paciente
                    {
                        rut = txtAdmRut.Text,
                        nombres = txtAdmNombres.Text,
                        apePaterno = txtAdmApellidoPatPaciente.Text,
                        apeMaterno = txtAdmApellidoMatPaciente.Text,
                        formaPago = cboAdmFormaPago.Text,
                        direccionPostal = txtAdmCodigoPostal.Text,
                        sexo = cboAdmSexo.Text,
                        edad = Convert.ToInt32(txtAdmEdad.Text),
                        contraindicaciones = txtAdmContraindicaciones.Text,
                    };
                    proyhospitalE.Paciente.Add(nuevopaciente);

                    int cama = Convert.ToInt32(nro_cama.Text);
                    Cama ingCama = proyhospitalE.Cama.FirstOrDefault(c => c.id_cama == cama);
                    ingCama.FK_rut = txtAdmRut.Text;
                    ingCama.estado = "Ocupado";
                    ingCama.fechaOcupacion = DateTime.Now;
                    MessageBox.Show("El paciente ha sido agregado");
                    proyhospitalE.SaveChanges();
                }
            }
        }

        private void btnAdmLimpiar_Click(object sender, EventArgs e)
        {
            //Limpia los diferentes controles del formulario
            txtAdmRut.Clear();
            txtAdmNombres.Clear();
            txtAdmApellidoPatPaciente.Clear();
            txtAdmApellidoMatPaciente.Clear();
            cboAdmUnidadFuncional.Items.Remove(cboAdmUnidadFuncional.Text);
            cboAdmFormaPago.Items.Remove(cboAdmFormaPago.Text);
            txtAdmCodigoPostal.Clear();
            cboAdmSexo.Items.Remove(cboAdmSexo.SelectedItem);
            txtAdmEdad.Clear();
            txtAdmContraindicaciones.Clear();
        }

       
        private void eliminarPacienteToolStripMenuItem_Click(object sender, EventArgs e)
        {
          /*  //Crea e inicializa el objeto frmeliminacionpaciente
            FormEliminacionPaciente frmeliminacionpaciente = new FormEliminacionPaciente();
            //Muestra el formulario de eliminación de paciente
            frmeliminacionpaciente.Show();
            
           * //Cierra el formulario Ingreso de paciente
           * */
            this.Close();
        }

        private void cboAdmUnidadFuncional_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void btn_consultar_Click(object sender, EventArgs e)
        {
            ProyHospitalEntities db = new ProyHospitalEntities();
            int index = cboAdmUnidadFuncional.SelectedIndex+1;
            Cama cam = db.Cama.FirstOrDefault(c => index == c.UnidadFuncional1.id_uFuncional && c.estado == "Disponible");
            if (cam != null)
            {
                nro_cama.Text = Convert.ToString(cam.id_cama);
                Nro_habitacion.Text = Convert.ToString(cam.numHabitacion);
            }
            else
            {
                MessageBox.Show("No se encontraron habitaciones disponibles en "+cboAdmUnidadFuncional.SelectedItem);
            }
           
        }
        //Evento KeyPress que solo permite ingresar número en el TextBox de Rut
        private void txtAdmRut_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        //Evento KeyPress que solo permite ingresar letras en el TextBox de Nombre
        private void txtAdmNombres_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        //Evento KeyPress que solo permite ingresar letras en el TextBox de Apellido paterno
        private void txtAdmApellidoPatPaciente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        //Evento KeyPress que solo permite ingresar letras en el TextBox de Apellido materno
        private void txtAdmApellidoMatPaciente_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        //Evento KeyPress que solo permite ingresar números en el TextBox de Edad
        private void txtAdmEdad_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }
        //Evento KeyPress que solo permite ingresar letras en el TextBox de Contraindicaciones
        private void txtAdmContraindicaciones_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        
    }
}
